//
//  ctrl.h
//  lilTerm
//
//  Created by Threese on 2019/7/21.
//  Copyright © 2019 Threese. All rights reserved.
//

#ifndef ctrl_H_INCLUDED
#define ctrl_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

struct date;
typedef struct date D;
typedef struct date date;

// typedef struct date {
//     int year, month, day;
// }D, date;

int compareDate(D d1, D d2);
void printDate(date d);
void copyDate(date *dst, date src);

struct task;
typedef struct task task;
typedef struct task T;
// typedef struct task {
//     char name [NAME_SIZE];
//     char label [LABEL_SIZE];
//     D sTime;
//     D eTime;
//     int importance;
//     //basic arrtibutes
    
//     task * nextTask;
//     task * previousTask;
// }T, task;
void copyTask(T *dst, T *src);

struct plan;
typedef struct plan P;
typedef struct plan plan;

// typedef struct plan {
//     char name [NAME_SIZE];
//     char label [LABEL_SIZE];
//     D sTime;
//     D eTime;
    
//     int taskNum;
//     T *headTask;
// }P, plan;
void addTask(plan *p, task *t);
void copyPlan(plan *dst, plan src);
T* getTask(int indexOfPlan,int indexOfTask);

// time_t timer;
// int year;
// int month;
// int day;

// P plans [PLAN_SIZE];
// int plansNum = 0;

//menu1
void instruction(void);

void seeTime(void);
void getToday(void);
void seeTask(void);
void checkPlan(void);
//TODO openFile and saveFile


//menu2
void planInstruction(void);

void printPlans(void);
void printPlan(plan p);
void printTask(task *t);
void editPlan(int index);
void createPlan(void);
void deletePlan(void);


//menu3
void ePlanInstruction(void);

void editPlanName(int);
void editPlanLabel(int indexOfPlan);
void editPlanStartTime(int);
void editPlanEndTime(int);
void createTask(P *p);
int  removeTask(P *p, int index);
void editTask(int indexOfPlan,int indexOfTask);


//menu4
void eTaskInstruction(void);
void editTaskName(int indexOfPlan,int indexOfTask);
void editTaskLabel(int indexOfPlan,int indexOfTask);
void editTaskStartTime(int indexOfPlan,int indexOfTask);
void editTaskEndTime(int indexOfPlan,int indexOfTask);
void editTaskImportance(int indexOfPlan,int indexOfTask);
int  setTaskImportance(P *p,int index);

void initDate(date *d);
void initTask(task *t);
void initPlan(plan *p);
void initial( void);

void ctrlOpen();
void ctrlSave();

#endif
